ASP.Net অ্যাপ্লিকেশনে Authentication এবং Authorization হল নিরাপত্তার দুটি মূল অংশ যা ব্যবহারকারীদের সনাক্তকরণ এবং তাদের অ্যাক্সেস কন্ট্রোল নিশ্চিত করে। কুকিজ (Cookies) ব্যবহার করে এই প্রক্রিয়াগুলিকে আরো সহজ এবং কার্যকর করা যায়। কুকিজ ব্যবহার করে, একটি অ্যাপ্লিকেশন ব্যবহারকারীর সেশন এবং অথেন্টিকেশন তথ্য সংরক্ষণ করতে পারে এবং পুনরায় ব্যবহার করার জন্য সেগুলিকে পাঠাতে পারে।
ASP.Net Core অ্যাপ্লিকেশনগুলিতে, কুকিজ সাধারণত Authentication এবং Authorization এর জন্য ব্যবহৃত হয়।
ASP.Net Core এ, কুকিজ ব্যবহারের মাধ্যমে ইউজারের সেশন পরিচালনা এবং নিরাপত্তা নিশ্চিত করা যায়। এটি সাধারণত AuthenticationMiddleware এর মাধ্যমে কনফিগার করা হয়। কুকিজে JWT (JSON Web Token) বা claims সংরক্ষণ করা যেতে পারে, যাতে নিরাপদে ব্যবহারকারীর তথ্যটি পরিচালনা করা যায়।
ASP.Net Core অ্যাপ্লিকেশনে কুকিজ ব্যবহার করে Authentication কনফিগার করার জন্য আপনাকে Startup.cs ফাইলে কিছু কনফিগারেশন করতে হবে। সাধারণত, কুকিজ ভিত্তিক অথেন্টিকেশন ব্যবহার করার জন্য ASP.Net Core এ Cookie Authentication মডিউল ব্যবহার করা হয়।
প্রথমে Startup.cs ফাইলের ConfigureServices মেথডে কুকিজ অথেন্টিকেশন সেবা নিবন্ধন করতে হবে।
public void ConfigureServices(IServiceCollection services)
{
// কুকিজ অথেন্টিকেশন সার্ভিস রেজিস্টার করা হচ্ছে
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login"; // লগইন পেজের রুট
options.AccessDeniedPath = "/Account/AccessDenied"; // অ্যাক্সেস ডিনাইড পেজ
});
services.AddControllersWithViews();
}
এখানে, AddCookie
মেথডটি কুকিজ ভিত্তিক অথেন্টিকেশন কনফিগার করে এবং লগইন এবং অ্যাক্সেস ডিনাইড পেজ নির্ধারণ করে।
এখন Configure মেথডে AuthenticationMiddleware যুক্ত করুন।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
// Authentication middleware যুক্ত করা
app.UseAuthentication();
// Authorization middleware যুক্ত করা
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
এখানে app.UseAuthentication()
এবং app.UseAuthorization()
middleware ব্যবহার করে, অ্যাপ্লিকেশনকে authentication এবং authorization নিশ্চিত করা হয়।
এখন, কুকিজে অথেন্টিকেশন তথ্য সংরক্ষণ করার জন্য একটি Login অ্যাকশন তৈরি করতে হবে। ব্যবহারকারী সফলভাবে লগইন করলে, একটি কুকি তৈরি করে ব্যবহারকারীকে সিস্টেমে প্রবেশাধিকার দেওয়া হবে।
public class AccountController : Controller
{
private readonly IAuthenticationService _authenticationService;
public AccountController(IAuthenticationService authenticationService)
{
_authenticationService = authenticationService;
}
[HttpPost]
public async Task<IActionResult> Login(string username, string password)
{
// ইউজারের তথ্য যাচাই
if (IsValidUser(username, password))
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, username), // ইউজার নাম কুকিতে সংরক্ষণ
// অন্যান্য claims যেমন রোল বা পারমিশনও যোগ করা যেতে পারে
};
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
// কুকিতে লগইন তথ্য সংরক্ষণ
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);
return RedirectToAction("Index", "Home");
}
// ইউজার সঠিক নয়
return View();
}
private bool IsValidUser(string username, string password)
{
// সঠিক ব্যবহারকারী যাচাই করা (এটি উদাহরণস্বরূপ)
return username == "admin" && password == "password";
}
}
এখানে, SignInAsync
মেথডটি কুকিজে ইউজারের claims ইনজেক্ট করে এবং ইউজারকে লগইন করা হয়।
কুকিজ ব্যবহারের মাধ্যমে Authorization কনফিগারেশন করা হয় যাতে নির্দিষ্ট রোল বা পারমিশন অনুযায়ী ইউজারদের অ্যাক্সেস প্রদান করা যায়।
[Authorize(Roles = "Admin")]
public IActionResult AdminPage()
{
return View();
}
এখানে, শুধুমাত্র Admin রোল থাকা ইউজারদের AdminPage অ্যাক্সেস করতে দেওয়া হবে।
Claims-based authorization এর মাধ্যমে, ইউজারের একটি নির্দিষ্ট claim এর ভিত্তিতে অনুমোদন করা হয়।
[Authorize(ClaimTypes.Name, "admin")]
public IActionResult AdminDashboard()
{
return View();
}
এখানে, Name claim যাচাই করা হচ্ছে এবং শুধুমাত্র "admin" নামের ইউজারদের AdminDashboard অ্যাক্সেস দেওয়া হবে।
অ্যাপ্লিকেশন থেকে লগআউট করার জন্য কুকিজ মুছে ফেলা হয়।
public async Task<IActionResult> Logout()
{
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
return RedirectToAction("Index", "Home");
}
এখানে, SignOutAsync
মেথডটি কুকি মুছে দেয় এবং ইউজারকে সিস্টেম থেকে লগআউট করে।
ASP.Net Core এ কুকিজ ব্যবহার করে Authentication এবং Authorization নিশ্চিত করা যায়। কুকিজ ব্যবহারের মাধ্যমে, আপনি ব্যবহারকারীর সেশন তথ্য এবং অনুমোদন বিস্তারিত নিরাপদে সংরক্ষণ করতে পারেন এবং বিভিন্ন রোল বা পারমিশনের উপর ভিত্তি করে তাদের অ্যাক্সেস কন্ট্রোল করতে পারেন।